﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespace BGCOP.CAVTOP.BUSINESSLAYER
{
    public class Empleados : IDisposable
    {
        
        public List<viEmpleado> listarEmpleados()
        {
            masterDBACEntities db = new masterDBACEntities();
            var listado = from ls in db.viEmpleado select ls;
            return listado.ToList();
        }
        
        public void cambiarHorario(string identi, int idhora)
        {
            using(masterDBACEntities db = new masterDBACEntities())
            {
                var ff = (from a in db.TEmpleado where a.identificacion == identi select a).FirstOrDefault();
                if (ff == null)
                {
                    return;
                }
                var tt = (from b in db.TTarjeta where b.idTarjeta == ff.idTarjeta select b).FirstOrDefault();
                if (tt == null)
                {
                    return;
                }
                tt.idHorario = idhora;
                db.SaveChanges();
            }
            
        }
        public TEmpleado consultarXtarjeta(string tarId)
        {
            masterDBACEntities db = new masterDBACEntities();
            var Tobj = (from a in db.TTarjeta where a.numtarjeta == tarId select a).FirstOrDefault();
            var Eobj = (from b in db.TEmpleado where b.idTarjeta == Tobj.idTarjeta select b).FirstOrDefault();
            return Eobj;
        }
        public List<TEmpleado> ListarTodos()
        {
            try
            {
                masterDBACEntities db = new masterDBACEntities();
                
                var tipos = from tp in db.TEmpleado orderby tp.nombre 
                            select tp;
                return tipos.ToList();
            }
            catch (Exception ex)
            {

                throw;
            }
        }
        public List<TEmpleado> ListarTodos(int idempresa)
        {
            try
            {
                masterDBACEntities db = new masterDBACEntities();

                var tipos = from tp in db.TEmpleado
                            where tp.idEmpresa == idempresa
                            orderby tp.nombre
                            select tp;
                return tipos.ToList();
            }
            catch (Exception ex)
            {

                throw;
            }
        }
        public bool CrearEmpleado(string nombre, string telefonoExt,
                                  string RazonSocial, string nombreDivi, string tipoIdenti, 
                                  string cargoE, string identificacion, string fechaC,
                                  string codigoB, int usuarioUg)
        {
            bool res = false;
            try
            {
                masterDBACEntities db = new masterDBACEntities();
                
                TEmpleado temp = new TEmpleado();
                TiposIdentificacion ti = new TiposIdentificacion();
                try
                {
                    var tie = ti.consulta(tipoIdenti);
                    temp.idTipoIdentificacion = tie.idTipoIdentificacion;
                }
                catch (Exception)
                {
                    
                    
                }
                
                Cargos cg = new Cargos();
                DivisionesEmpresa dv = new DivisionesEmpresa();
                try
                {
                    var div = dv.consulta(nombreDivi);
                    temp.idDivisionEmpresa = div.IdDivisionEmpresa;
                }
                catch (Exception)
                {
                    
                    
                }

                try
                {
                    var cgi = cg.Buscar(cargoE);
                    temp.idCargo = cgi.idCargo;
                }
                catch (Exception)
                {
                    
                    
                }
                
                Empresas em = new Empresas();
                try
                {
                    var emp = em.Consultar(RazonSocial);
                    temp.idEmpresa = emp.idEmpresa;
                }
                catch (Exception)
                {
                    
                }
                

                temp.fechaUltimaGestion = Convert.ToDateTime(fechaC);
                temp.usuarioUltimaGestion = usuarioUg;
                
                
                
                temp.idTipoEstado = 1;
                
                temp.identificacion = identificacion;
                temp.nombre = nombre;
                db.AddToTEmpleado(temp);
                db.SaveChanges();
            }
            catch (Exception)
            {
                
                throw;
            }
            

            
            res = true;
            return res;
        }

        public void Dispose()
        {
            
        }
    }
}
